﻿Public Class frm_reporteVentas
    Dim accesoDatos As New AccesoDatos("Empleado")
    'Declaramos variables para el ancho y el alto 
    Dim ancho As Integer
    Dim alto As Integer
    'Variable para la primera ejecución y que no utilice el resize 
    Dim primero As Boolean

    Private Sub cmd_crearInforme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_crearInforme.Click

        Dim reporte As New Reporte_Ventas_por_empleado
        Dim tabla As New Data.DataTable
        Dim sql As String

        sql = "SELECT * FROM Empleado e inner join Venta v on (v.idEmpleado = e.idEmpleado)"
        sql &= " WHERE v.fecha between '" & dtp_fechaDesdexEmpleado.Text & "' And '" & dtp_fechaHastaxEmpleado.Text & "'"

        tabla = accesoDatos.consulta(sql)
        reporte.SetDataSource(tabla)

        CrystalReportViewer1.ReportSource = reporte
        CrystalReportViewer1.Show()
        CrystalReportViewer1.Refresh()

    End Sub



    Private Sub reporteVentas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Inicializamos valor a las variables globales. 
        ancho = Me.Width
        alto = Me.Height

        Dim tablaAños As New Data.DataTable




        dtp_fechaHasta.Format = DateTimePickerFormat.Custom
        dtp_fechaHasta.CustomFormat = "dd/MM/yyyy"

        dtp_fechaDesde.Format = DateTimePickerFormat.Custom
        dtp_fechaDesde.CustomFormat = "dd/MM/yyyy"

        dtp_fechaDesdeMasVend.Format = DateTimePickerFormat.Custom
        dtp_fechaDesdeMasVend.CustomFormat = "dd/MM/yyyy"

        dtp_fechaHastaMasVend.Format = DateTimePickerFormat.Custom
        dtp_fechaHastaMasVend.CustomFormat = "dd/MM/yyyy"

        dtp_fechaDesdexEmpleado.Format = DateTimePickerFormat.Custom
        dtp_fechaDesdexEmpleado.CustomFormat = "dd/MM/yyyy"

        dtp_fechaHastaxEmpleado.Format = DateTimePickerFormat.Custom
        dtp_fechaHastaxEmpleado.CustomFormat = "dd/MM/yyyy"

        tablaAños = accesoDatos.consulta("Select distinct YEAR(venta.fecha) FROM venta")

        For i As Integer = 0 To tablaAños.Rows.Count - 1
            cmb_año.Items.Add(tablaAños.Rows(i)(0))
        Next

    End Sub

    Private Sub cmb_prodMasVendidos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_prodMasVendidos.Click

        Dim reporte As New repote_productos_mas_vendidos
        Dim tabla As New Data.DataTable
        Dim sql As String

        sql = "SELECT * FROM producto p inner join DetalleVenta dv on p.idProducto=dv.idProducto inner join Venta v on dv.idVenta=v.idVenta"
        sql &= " WHERE v.fecha between '" & dtp_fechaDesdeMasVend.Text & "' And '" & dtp_fechaHastaMasVend.Text & "'"

        'sql = "SELECT TOP " & cmb_cantListar.Text & " * FROM producto"

        MsgBox(sql)
        tabla = accesoDatos.consulta(sql)
        reporte.SetDataSource(tabla)

        CrystalReportViewer1.ReportSource = reporte
        CrystalReportViewer1.Show()
        CrystalReportViewer1.Refresh()
    End Sub


    Private Sub cmd_Ventas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Ventas.Click
        Dim sql As String
        Dim reporte As New Reporte_venta
        Dim tabla As New Data.DataTable

        sql = "SELECT * FROM venta"
        sql &= " WHERE venta.fecha between '" & dtp_fechaDesde.Text & "' And '" & dtp_fechaHasta.Text & "'"
        sql &= " AND venta.esAnulada = 'False' "

        tabla = accesoDatos.consulta(sql)
        reporte.SetDataSource(tabla)
        CrystalReportViewer1.ReportSource = reporte
        CrystalReportViewer1.Show()
        CrystalReportViewer1.Refresh()
    End Sub


    Private Sub cmd_ventasPorMes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_ventasPorMes.Click
        Dim reporte As New Reporte_Venta_por_Mes

        CrystalReportViewer1.ReportSource = reporte
        CrystalReportViewer1.Show()
        CrystalReportViewer1.Refresh()

        'Dim sql As String = ""


        'Dim tabla As New Data.DataTable
        'Dim reporte As New Reporte_Venta_por_Mes

        'If cmb_año.SelectedIndex = -1 Then
        '    MessageBox.Show("Seleccione un año", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Stop)
        '    cmb_año.Focus()
        'Else
        '    sql = "SELECT  { fn MONTHNAME(fecha) } AS Mes, COUNT(idVenta) AS Cantidad FROM Venta WHERE (YEAR(fecha) = " & cmb_año.Text & ") GROUP BY { fn MONTHNAME(fecha)}"

        '    tabla = accesoDatos.consulta(sql)

        '    reporte.SetDataSource(tabla)
        '    CrystalReportViewer1.ReportSource = reporte

        '    CrystalReportViewer1.Show()
        '    CrystalReportViewer1.Refresh()
        'End If


    End Sub


 
    'Private Sub cmd_facturacion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '    'Dim sql As String

    '    Dim reporte As New Reporte_Facturacion
    '    Dim tabla As New Data.DataTable

    '    'sql = "SELECT * FROM venta v"
    '    'sql &= " WHERE v.fecha between '" & dtp_facturacionDesde.Text & "' and '" & dtp_facturacionDesde.Text & "'"

    '    'tabla = accesoDatos.consulta(sql)
    '    'reporte.SetDataSource(tabla)
    '    CrystalReportViewer1.ReportSource = reporte
    '    CrystalReportViewer1.Show()
    '    CrystalReportViewer1.Refresh()
    'End Sub

    Private Sub frm_reporteVentas_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        'Por si ocurre algun error inesperado 
        On Error Resume Next
        'Variables para los porcentajes 
        Dim porcancho As Integer
        Dim porcalto As Integer
        ' Aquí evitamos lo innecesario de ajustar cuando la ventana se minimiza 
        If WindowState = FormWindowState.Minimized Then
            'Simplemente salimos del procedimiento. 
            Exit Sub
        End If
        'Si es la primera ejecución... 
        If primero = False Then
            'Damos valor verdadero a la variable para la próxima 
            primero = True
            'Salimos 
            Exit Sub
        End If
        'Obtenemos los porcentaje de ancho y alto 
        porcancho = FormatNumber((Me.Width * 100) / ancho, 2)
        porcalto = FormatNumber((Me.Height * 100) / alto, 2)
        'recorremos absolutamente todos los controles. 
        For Each CControl As Control In Me.Controls
            'Asignamos la nueva posición y dimensión. 
            CControl.Top = (CControl.Top * porcalto) / 100
            CControl.Left = (CControl.Left * porcancho) / 100
            CControl.Width = (CControl.Width * porcancho) / 100
            CControl.Height = (CControl.Height * porcalto) / 100
        Next
        'A las variables globales a nivel del formulario 
        'Le asignamos el actual valor. 
        ancho = Me.Width
        alto = Me.Height
    End Sub


    Private Sub tabulador_ventas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tabulador_ventas.SelectedIndexChanged
        CrystalReportViewer1.ReportSource = Nothing
    End Sub
End Class